//C语言中的整数类型的二进制为有原码，反码，补码
//操作二进制位的 的有 & | ^ ~

//1.求整数的二进位
//用除法
//当a=5时 0101  5/2=2  0010 2/2=1 0001 
int ff(unsigned int a)
{
	int i=0;
	while(a)
	{
		if(a%2==1)
		i++;
		a/=2;
	}
	return i;
}
//用a=a&(a-1)  0101 & 0100=0100     0100& 0011=0000
int ff1(unsigned int a)
{
	int i=0;
	while(a)
	{
		i++;
		a=(a-1)&a;
	}
	return i;
}
int main()
{
	int a=0;
	scanf("%d",&a);
	ff(a) ;
	ff1(a);
}

//2.给 两个整形 求他们的二进制位的不同
//求二进制的相同部分
int ff(int a,int b)
{
	int c=a&b;
	int i=0;
	while(c)
	{
		i++;
		c=(c-1)&c;
	}
	return i;
}
int main()
{
	int a=0,b=0;
	scanf("%d %d",&a,&b);
	ff(a,b);
}
//	求不同
int ff(int a,int b)
{
	int c=a^b;
	int i=0;
	while(c)
	{
		i++;
		c=(c-1)&c;
	}
	return i;
}
int main()
{
	int a=0,b=0;
	scanf("%d %d",&a,&b);
	ff(a,b);
}





